package grupo1.fotomultas.Fotomultas.Infracciones;

import grupo1.fotomultas.Fotomultas.Notificaciones.NotificacionConfiguracion;

import java.util.HashSet;
import java.util.Set;



// CORREGIR esto no era un requerimiento del tp

// Por otro lado, si lo estan clasificando, para que usan el enum?
// Va, digo, si lo estoy modelando como una herencia, un objeto puede tener mucho
// mas comportamiento que un enum, asi q si tengo dudas en cuando al comportamiento
// mejor uso un objeto y ya
public class TipoInfraccion {

	public static final String NOMBRE = "nombre";
	
	private int puntos;
	private int costo;
	private Set<NotificacionConfiguracion> notificaciones;
	private String nombre;

	public TipoInfraccion(String nombre, int puntos2, int costo2, 
			Set<NotificacionConfiguracion> notificaciones2) {
		this.setCosto(costo2);
		this.setPuntos(puntos2);
		this.setNotificaciones(notificaciones2);
		this.setNombre(nombre);
		
		HomeTipoInfraccion.instance().agregarTipoInfraccion(this);
	}

	public void enviarNotificaciones(Infraccion infraccion){
		for(NotificacionConfiguracion n : notificaciones){
			n.setRemitente(infraccion.telefonoComisaria());
			n.enviarNotificacion(infraccion);
		}
	}
	
	public int getPuntos() {
		return puntos;
	}
	public int getCosto() {
		return costo;
	}

	public void setCosto(int costo) {
		this.costo = costo;
	}

	public void setPuntos(int puntos) {
		this.puntos = puntos;
	}

	public void setNotificaciones(Set<NotificacionConfiguracion> notificaciones) {
		this.getNotificaciones().addAll(notificaciones);
	}

	public Set<NotificacionConfiguracion> getNotificaciones() {
		if(notificaciones == null){
			notificaciones = new HashSet<NotificacionConfiguracion>();
		}
		return notificaciones;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
}
